{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# DAY3 最大似然估计"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "极大似然估计，通俗理解来说，就是利用已知的样本结果信息，反推最具有可能（最大概率）导致这些样本结果出现的模型参数值！\n",
    "\n",
    "换句话说，极大似然估计提供了一种给定观察数据来评估模型参数的方法，即：“模型已定，参数未知”。\n",
    "\n",
    "\n",
    "\n",
    "### 硬币的抛掷实验\n",
    "\n",
    "- **实验设定**：我们有一枚硬币，不确定其是否均匀（即正反两面出现的概率是否相等）。硬币的均匀程度用参数 $\\theta$ 表示。\n",
    "- **参数定义**：$\\theta$ 的取值在 0 到 1 之间，其中 $\\theta = 0.5$ 表示硬币完全均匀（正反面概率相等），而 $\\theta = 1$ 表示硬币总是正面朝上。\n",
    "- **观察数据**：在实验中，硬币被抛掷了 10 次，结果是 6 次正面，4 次反面。\n",
    "\n",
    "### 参数估计过程\n",
    "\n",
    "1. **建立似然函数**：似然函数表示在给定的 $\\theta$ 下，观察到当前实验结果（6正4反）的概率。这可以表示为 $L(\\theta) = \\theta^6 \\times (1-\\theta)^4$。\n",
    "\n",
    "2. **求解似然函数的最大值**：为了找到最大似然估计，我们需要找到使似然函数 $L(\\theta)$ 最大的 $\\theta$ 值。通常这通过求导并设置导数为0来解决，找到可能的 $\\theta$ 值。\n",
    "\n",
    "3. **得到参数估计**：通过这个过程，我们可以得到一个 $\\theta$ 的估计值，这个值就是在已有数据下，硬币正面朝上的最可能概率。\n",
    "\n",
    "### 直观理解\n",
    "\n",
    "直观上，如果我们看到一个硬币在10次抛掷中6次出现正面，我们倾向于相信这个硬币正面出现的概率可能略高于0.5，但并不会非常极端（比如接近1）。这种基于观察数据来估计未知参数的思想是最大似然估计的核心。在这个案例中，它帮助我们根据实验结果来估计硬币的均匀程度。\n",
    "\n",
    "--- \n",
    "\n",
    "### 设置问题\n",
    "\n",
    "- **实验设定**：进行100组独立的硬币抛掷实验，每组抛10次。\n",
    "- **观察数据**：每组实验中硬币正面朝上的次数，例如第一组可能是6次正面，第二组可能是4次正面，依此类推。\n",
    "- **参数定义**：用 $\\theta$ 表示硬币正面朝上的概率。\n",
    "\n",
    "### 最大似然估计\n",
    "\n",
    "1. **建立似然函数**：对于每组实验，假设硬币正面朝上的次数是 $k$，那么该组实验的似然是 $\\theta^k \\times (1-\\theta)^{10-k}$。因为100组实验是独立的，所以总的似然函数是所有单个实验似然的乘积：\n",
    "   $$ L(\\theta) = \\prod_{i=1}^{100} \\theta^{k_i} \\times (1-\\theta)^{10-k_i} $$\n",
    "   其中，$k_i$ 是第 $i$ 组实验中硬币正面朝上的次数。\n",
    "\n",
    "2. **最大化似然函数**：要找到使似然函数 $L(\\theta)$ 最大的 $\\theta$ 值，我们通常对似然函数取对数（因为乘积的对数是求和，这在数学上更易于处理）。所以，我们得到对数似然函数：\n",
    "   $$ \\ln L(\\theta) = \\sum_{i=1}^{100} [k_i \\ln(\\theta) + (10 - k_i) \\ln(1 - \\theta)] $$\n",
    "   接下来，我们对 $\\theta$ 求导，并令导数等于0，来找到极值点。\n",
    "\n",
    "3. **求解参数估计**：通过求解上述方程，我们可以找到使似然函数最大化的 $\\theta$ 值。这个值就是硬币正面朝上的概率的最大似然估计。\n",
    "\n",
    "### 直观解释\n",
    "\n",
    "在这100组实验中，每组实验都给了我们关于硬币均匀程度的信息。通过最大似然估计，我们综合这些信息，以找出最有可能导致我们观察到的结果（即每组中正面朝上的次数）的硬币正面朝上的概率。这个估计值是在当前数据下最合理的硬币均匀程度的估计。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated probability of heads (θ): 0.7000387612261847\n"
     ]
    }
   ],
   "source": [
    "# 硬币抛掷结果数据，1代表正面，0代表反面\n",
    "# 似然函数\n",
    "    # theta是硬币正面朝上的概率\n",
    "    # 计算似然\n",
    "    # 返回似然的负数，因为我们将使用最小化函数\n",
    "# 初始化theta的值\n",
    "# 使用scipy.optimize.minimize进行优化\n",
    "# 输出最优化结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这段代码是用Python和Scipy库实现的，用于通过coin_flips_likelihood.png中的数据估计硬币正面朝上的概率（θ）。以下是代码的详细解释：\n",
    "\n",
    "1. 首先，我们导入了所需的库，包括NumPy和Scipy的optimize模块。\n",
    "\n",
    "2. 我们定义了一个名为`likelihood`的函数，该函数接受一个参数`theta`和一个数据集`data`。在这个函数中，我们首先计算正面朝上的概率`theta`，然后使用`np.prod`计算给定数据集的似然。由于我们的目标是最大化似然，所以我们使用`-likelihood`作为目标函数。\n",
    "\n",
    "3. 初始化`theta`的值为0.5。\n",
    "\n",
    "4. 使用Scipy的`minimize`函数在给定范围内查找最小值。在这个例子中，我们使用`lambda`函数创建了一个匿名函数，该函数接受`theta`作为参数，并返回`likelihood`的负数。这样，`minimize`函数就可以找到最大化的似然函数。\n",
    "\n",
    "5. 输出最小化结果。`result.x`是一个包含最小值对应参数的数组，所以我们只需要选择第一个元素（即正面朝上的概率）。\n",
    "\n",
    "总之，这段代码使用最大似然估计（MLE）估计了硬币正面朝上的概率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACL8klEQVR4nOzdeZyN5f/H8feYMTMGw4x9HZKULbIN2ROisQvJFhEpWqxZI0sJoaIIWStlS9YsJetoDGMskWXs+yzMPtfvD7+5v45ZjMmcYXo9H4/zqHOf+77Ode45zvmc933d1+1gjDECAAAAAAAA7ChTencAAAAAAAAA/z2EUgAAAAAAALA7QikAAAAAAADYHaEUAAAAAAAA7I5QCgAAAAAAAHZHKAUAAAAAAAC7I5QCAAAAAACA3RFKAQAAAAAAwO4IpYB7nDhxQr1799bJkydTtf358+c1Y8YMRUVFPdR+LV++XNOnT3+obf7XhISE6MiRI4qJiUl2PT8/P61fv95mWWBgoIwxD7U/L7zwgpYvX/5Q20yOMUbffvutbty4cd91Dx8+rL179953vZkzZ+qNN954GN17IEePHk3073HgwAHFxsYmu+3mzZv166+/PtT+hIeHa/To0dqzZ89DbRcAAADIyJzSuwPAw3Lt2jWdPHlSLi4ucnJykoODQ7LrZ8+eXYUKFUqwfOvWrfrpp580efLkVPUjKChIb7/9tt58881EH//hhx/k6OgoR0dHSVJ0dLTKli2rZ555RpIUFRWl2NhYubq62ryGgIAAffLJJ+rRo4eyZMliLY+JidHt27fl7u6eqv4+rvbt26dffvnF2o/3iomJUYUKFdSiRQtr2dq1a9W+fXtdvnxZefLkkSTduHFDb775piZMmKDixYtLkqZMmaJdu3bp2LFjkqSIiAhVr15ddevW1cqVKx+onxcuXNCMGTM0duxYm7/ngQMHtHnzZo0aNeq+bYSGhurEiRNycXG57/vaGKPo6GjlyZNHBQoUsHksICBA3bt3V0xMjLJmzSoXFxdrm8jISL322mvWurNnz1ZAQIBNOHf8+HGFhoaqYsWKNq/v6NGjNs9z/fp1Xb58WU8//bS1LCQkxPr3GS88PFylSpVSu3btkgyBX331VQ0dOjTB8lq1aqlv374aMWKEzfLWrVvrueee0/fff5/kPvrxxx8VFhamJk2aJHjs3Llz2rJli7Jlyybpzr65ffu22rVrJyenO1+Zt27dkrOzszJnzmxtlyVLFn333XcKCgpS1apVreXGGOvftJubW5J9AgB7i46O1tGjR1W2bNn07goA4D+MUAoZxtatW9W+fXu5uLgoU6ZMypQp6YGAYWFhat26daI/XH/77Te1a9dOWbJkkTFGsbGxioqKUkREhAYOHJhoe1988YX1Y9vFxUVubm5ycnLSunXr9NJLL1nrDR06VH/++adCQkJ05swZubi4KE+ePBowYIAVSi1evFjdunVTlixZbH7ExsTEyMXFRUWKFLGWxcXFKSwsTNHR0Q99FM+MGTP0ySefKDw8XD179tSYMWOS3adJOXjwoJ577jktWbJEbdq0eWj9i42NVXh4uJycnHTgwAGtXr1affv2VY4cOay/W3R0tIKCghQdHa0nnnhCrq6ukqQcOXJY7YSHh2vbtm1q06aNdu7cKWdnZ/Xo0UMLFizQnj17VLVqVa1YsUJhYWEJApBTp06pePHiOnnypIoVK5ZoP48ePaqJEycqe/bsGjx4sLV80aJFqlatmmrVqnXf13rgwAE1aNBAzs7ONqFUTEyMbt26ZfN6jDGKiYnRmDFj9N5779m0s3z5cuXPn19t27ZV8+bNdejQIbm7u+uJJ57Q7du3bUKprFmzKmvWrDbbf/XVV/Lz89PmzZutZZkzZ07wvlixYoWGDRum8+fPW8v27t2rl19+WU5OTgoLC1PWrFkVGRkpX19fBQUFqXnz5jb/ViRpzJgxiY7qunbtmq5cuaLmzZvbLP/nn390/PhxffXVV0nuS0nWZ4QktW/f3uZzYO7cufr000+VJUsW7du3T+XKlVNcXJxatmxphVJNmzbVH3/8oWzZslnBVExMjJycnLRixQqtWLHCai8yMlK3b99Wp06dNG/evGT7BQBJOXHihCZNmqSBAwdaB1D+raFDh+qrr77S+fPn/9WBrW3btqlz5846ffq0Fi5cqNOnT+vDDz9MdN0vvvhCTZo0eWivQbozunnx4sX65JNP7nvgBo+2f/75R25ubsqfP3+S64SFhemnn35S69atrQNIV65ckTFGefPmTXT9efPmqX379sqdO/dD6+uWLVu0fft2DR8+/KG1+TAsXLhQL7zwQoIDk/c6efKkzp49e986dMWKFZozZ45Wr179MLt5X3///beeeOKJBAef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GSkVf9rszZs3rVDzXq+++qpiYmI0d+5c3bhxQ++//746d+6spUuXavHixapQoYKqV6+u0aNHy9fXV76+vgRSwH/UozCKW7oTsA8ZMiTREVF3/9iSpF27dumll16y6Uti/Yr/rsiVK5ekO6Gag4ODGjdurA8//FA5cuSwfjQfO3ZMZ8+eVUxMjHx9fa0fdUFBQdq0aZO+++47DRgwQAMHDtSKFSu0fPnyBBek8PLy0sWLF5UzZ07r++Ds2bOqVq2apkyZorZt20r634GOkydPysnJKdGRZ//WxYsXNWTIEA0ZMuSRDaQCAwP16quvJnpgbtOmTerQoYN69+4tHx8fjRw5Uu++++59T39/EPGBQkREhCZOnKh27dolmCPy0KFDKlu2rFasWKHmzZvL0dExQY0zatQobdu2TRMnTlTr1q3l4OCg119/3arDfvvtNx07dszm1Pl4/v7+OnXqlKQ74VL+/Pnl6OiomJgYjRo1SmfOnNGYMWPk5uamSZMm6caNG/ryyy9t2qhdu7bOnj2rAgUKWOHMX3/9paZNm2rp0qWqVauWTWhz8OBBFSxYUJ6enineV4UKFVJERESC5fGjyw8cOJCigOuLL75Q06ZNlTt3bq1du1Zt27ZVgQIFrH+Hf//9txwcHLRnz55/PSL+7v9KUokSJRQREaGwsDBlz55dhw4dsvr83XffqWjRoqpZs6YOHz6sbNmyqUiRIlq3bp3195Hu/BY7ceKELl++rFu3bqlYsWI6fvy4NX3JDz/8oIiICAUHB2vmzJnWdmXKlFGtWrUUFRWl7du36++//9a1a9e0ZcsWq4aPr/+KFy+uVatWqXjx4ipatKgWLFhgMxeodCe4GjdunAoWLGgte++99+Tn56c1a9YkGNG2fft2VatW7b77DUkjlEKG4uTkpNjYWJsPuMQk9sEfFRWld9991xpufuvWrURHSdzPzp07FRcXp6+++srmaIx054hHTEyMfv75Zx07dkzbt2/X9evX9cQTT+jll1+21itWrJh8fX1ljNHMmTP19NNPa/Xq1Tp//ry2bdumokWLytXVVQcPHrRGi8SrW7euihQporCwMK1fv15PPPGExo0bp2bNmkmSfv311ySvDJg/f34FBARIksqXL28td3BwUPHixfX333+nOJT64IMPdPPmTV27dk2dOnVS7dq11b1791TNS5WcKVOm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g4YOHapy5crpq6++0qlTpxQXF6fff/9dvXr1SjDqpWHDhoqLi7Mu7BLv9ddfV+bMmRO9vfDCC5LuhEVt27a12syUKZPeeOMNRURE6PDhw/f9W6RUixYtbEKIPHnyWDVVUn3MnDmz5s+ff9+244OSu/++0oONiE+Jn376STVq1NCAAQN08uRJNW7cWCNGjNC5c+dSNKJ91apVKly4sNasWaNly5bp119/lbe3t6pVq6Z58+Zp9+7dqlatmqpXr67ff/9dCxcu1NWrV+Xj46Off/5ZxhiNGDHCmlPqvffe09SpUyXdqY3jp8qQ7hxUqlWrlsqWLZtgZM/evXt19uxZ7d+/X61atdKpU6fUvn17nTlzRmPHjtULL7ygTz75RHv37lXx4sW1c+dOderUyWZqhvLly9sEllWqVEkwtUdyChcubM0jV6xYMZUqVcpmFKGDg4PN387BwUF9+vTRrl279Nxzz2nVqlWqWbNmsiPiIyIiNGvWrBQHk5s3b050svLEuLu7K2fOnNacvvXq1bNOZUxs2ooVK1boypUrunLlis2BXgcHB/Xv31/z5s2zau27R8QfOHBAP/74o3VgcO/evdZI9WPHjmnw4MFWW2vXrlVwcLC6detm89zGGM2ZM0cdO3bUunXrrICudevWmjVrlvbu3av33ntPTZo00bp16/Tee+9p+fLlVt2J1GGkFDIUBweHREOmxOzatUutWrXS3Llz1bVrV2v5jh07tGzZMi1YsEDPPfecmjRpouDgYGvUxt1XtYgXExMjJyenBENuN23apAsXLihXrlwKDAzUsmXL9M4771jnisePOlm9erVq1qypKlWqKDQ0VM7OzglGFE2YMEELFy5MUEQZYxQbG2sTAJ09e1avv/66OnfurIULF+rcuXPq27dvivaLdKdArFKliry9vVW8eHH99NNPevvtt60v2GvXrunkyZOqWLFioud+9+jRQ5999pnat2+vPn366OLFixo6dKhq1aplTQR46tQp3b59W6VLl05xv5ISFRWl1157TSdOnNCuXbtsHlu+fHmy244fP16zZs1K9LH27dsnWPbss89ak8bHix/90qVLF02aNEnDhw/X119/LenOVUaOHTtmzesk3QmkXnzxRTVr1syaf+P9999XmzZt9PXXX9u8H9PSmjVrtGHDBqtvzz33nLZv357ouskVMikxZswY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",
      "text/plain": [
       "<Figure size 1200x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 导入必要的库\n",
    "# 提示: 需要导入 numpy, matplotlib.pyplot, scipy.stats 中的 binom\n",
    "\n",
    "# 设置 matplotlib 图表的字体和字号，以适应中文显示和美观性\n",
    "# 提示: 使用 plt.rcParams 设置 'font.family' 为 'SimHei' 和 'font.size' 为 10\n",
    "\n",
    "# 定义一个函数，用于绘制伯努利分布图\n",
    "# 提示: 函数名为 plot_binomial_distribution，参数包括 n, k, is_fixed_k, bar_color, highlight_color\n",
    "# 函数内部需包含根据 is_fixed_k 的值来决定绘制哪种类型的伯努利分布图的逻辑\n",
    "\n",
    "# 设置伯努利试验的次数和期望的成功次数\n",
    "# 提示: 设置变量 n 和 k\n",
    "\n",
    "# 创建一个图表并设置其大小\n",
    "# 提示: 使用 plt.figure 方法，设置 figsize\n",
    "\n",
    "# 在图表中绘制两种伯努利分布图\n",
    "# 提示: 使用 plt.subplot 来创建子图，分别调用 plot_binomial_distribution 函数绘制固定 p 和固定 k 的分布图\n",
    "\n",
    "# 显示图表\n",
    "# 提示: 使用 plt.show 方法\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们定义了一个名为`plot_binomial_distribution`的函数，该函数接受以下参数：\n",
    "\n",
    "- `n`：伯努利试验的次数。\n",
    "- `k`：期望的成功次数。\n",
    "- `is_fixed_k`：一个布尔值，表示是否固定k值。如果为`True`，则固定k值；如果为`False`，则根据p值计算k值。\n",
    "- `bar_color`：条形图的颜色。\n",
    "- `highlight_color`：突出显示的颜色。\n",
    "\n",
    "该函数首先计算概率p的不同取值，然后绘制条形图。如果`is_fixed_k`为`True`，则显示最大概率点处的p值和对应的概率质量函数值。如果`is_fixed_k`为`False`，则根据给定的p值计算k值，并显示最大概率点处的k值和对应的概率质量函数值。\n",
    "\n",
    "我们设置了伯努利试验的次数为10，期望的成功次数为6。然后，我们分别调用`plot_binomial_distribution`函数绘制固定p时的概率分布图和固定k时的概率分布图。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
